package com.tqffram.hibernate.mapper;

import com.tqffram.hibernate.entitry.Person;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

/**
 * @Author: 唐祺峰
 * @Date: 2022/2/15 0015 17:01
 * @Version 1.0
 */

// hibernate的接口，springboot整合hibernate用的是jpa，接口要集成JpaRepository
// 里面已经集成了几个方法，额外的查询需要我们手动添加方法HQL

public interface PersonRepository extends JpaRepository<Person,Integer> {
    public Person findById(Long id);  // 这个在集成的类的子类里面有明确的sql实现，不用再写SQL或者HQL，也可以不写，直接在service里用子类的

    public Person save(Person user);  // 同上

    @Query(value = "SELECT p FROM Person p WHERE name=:name")   // 这是HQL  :xx 指传入参数，跟下面注解@Param对应
    // @Query(value = "SELECT * FROM Person WHERE name=?", nativeQuery = true)   // 这是SQL   nativeQuery为true代表使用SQL语言
    public Person findByName(@Param("name") String name);

}
